package com.cdeledu.thread4.c22;

import java.io.IOException;
import java.util.Scanner;

/**DocumentEditThread线程则类似于主动编辑文档的作者，在DocumentEditThread中除了对文档进行修改编辑之外，还会同时按下Ctrl+S组合键（调用save方法）主动保存。
 * DocumentEditThread类代表了主动编辑文档的线程，在该线程中，我们使用Scanner交互的方式，每一次对文档的修改都不可能直接保存（Ctrl+S），因此在程序中约定了五次以后主动执行保存动作，当输入quit时，表示要退出此次文档编辑
 * @author HP
 *
 */
public class DocumentEditThread extends Thread {

	private final String documentPath;
	private final String documentName;
	private final Scanner scanner = new Scanner(System.in);

	public DocumentEditThread(String documentPath, String documentName) {
		super("DocumentEditThread");
		this.documentPath = documentPath;
		this.documentName = documentName;
	}

	@Override
	public void run() {
		int times = 0;
		try {
			Document document = Document.create(documentPath, documentName);
			while (true) {
				// 获取用户的键盘输入
				String text = scanner.next();
				if ("quit".equals(text)) {
					document.close();
					break;
				}
				// 将内容编辑到document中
				document.edit(text);
				if (times == 5) {
					// 用户在输入了5次之后进行文档保存
					document.save();
					times = 0;
				}
				times++;
			}
		} catch (IOException e) {
			throw new RuntimeException(e);
		}
	}

}
